↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
rev_in_ag([], []) → rev_out_ag([], [])
rev_in_ag(.(X, Xs), Ys) → U1_ag(X, Xs, Ys, rev_in_aa(Xs, Zs))
rev_in_aa([], []) → rev_out_aa([], [])
rev_in_aa(.(X, Xs), Ys) → U1_aa(X, Xs, Ys, rev_in_aa(Xs, Zs))
U1_aa(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_aa(X, Xs, Ys, app_in_gga(Zs, .(X, []), Ys))
app_in_gga([], X, X) → app_out_gga([], X, X)
app_in_gga(.(X, Xs), Ys, .(X, Zs)) → U3_gga(X, Xs, Ys, Zs, app_in_gga(Xs, Ys, Zs))
U3_gga(X, Xs, Ys, Zs, app_out_gga(Xs, Ys, Zs)) → app_out_gga(.(X, Xs), Ys, .(X, Zs))
U2_aa(X, Xs, Ys, app_out_gga(Zs, .(X, []), Ys)) → rev_out_aa(.(X, Xs), Ys)
U1_ag(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_ag(X, Xs, Ys, app_in_ggg(Zs, .(X, []), Ys))
app_in_ggg([], X, X) → app_out_ggg([], X, X)
app_in_ggg(.(X, Xs), Ys, .(X, Zs)) → U3_ggg(X, Xs, Ys, Zs, app_in_ggg(Xs, Ys, Zs))
U3_ggg(X, Xs, Ys, Zs, app_out_ggg(Xs, Ys, Zs)) → app_out_ggg(.(X, Xs), Ys, .(X, Zs))
U2_ag(X, Xs, Ys, app_out_ggg(Zs, .(X, []), Ys)) → rev_out_ag(.(X, Xs), Ys)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PrologToPiTRSProof
rev_in_ag([], []) → rev_out_ag([], [])
rev_in_ag(.(X, Xs), Ys) → U1_ag(X, Xs, Ys, rev_in_aa(Xs, Zs))
rev_in_aa([], []) → rev_out_aa([], [])
rev_in_aa(.(X, Xs), Ys) → U1_aa(X, Xs, Ys, rev_in_aa(Xs, Zs))
U1_aa(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_aa(X, Xs, Ys, app_in_gga(Zs, .(X, []), Ys))
app_in_gga([], X, X) → app_out_gga([], X, X)
app_in_gga(.(X, Xs), Ys, .(X, Zs)) → U3_gga(X, Xs, Ys, Zs, app_in_gga(Xs, Ys, Zs))
U3_gga(X, Xs, Ys, Zs, app_out_gga(Xs, Ys, Zs)) → app_out_gga(.(X, Xs), Ys, .(X, Zs))
U2_aa(X, Xs, Ys, app_out_gga(Zs, .(X, []), Ys)) → rev_out_aa(.(X, Xs), Ys)
U1_ag(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_ag(X, Xs, Ys, app_in_ggg(Zs, .(X, []), Ys))
app_in_ggg([], X, X) → app_out_ggg([], X, X)
app_in_ggg(.(X, Xs), Ys, .(X, Zs)) → U3_ggg(X, Xs, Ys, Zs, app_in_ggg(Xs, Ys, Zs))
U3_ggg(X, Xs, Ys, Zs, app_out_ggg(Xs, Ys, Zs)) → app_out_ggg(.(X, Xs), Ys, .(X, Zs))
U2_ag(X, Xs, Ys, app_out_ggg(Zs, .(X, []), Ys)) → rev_out_ag(.(X, Xs), Ys)
REV_IN_AG(.(X, Xs), Ys) → U1_AG(X, Xs, Ys, rev_in_aa(Xs, Zs))
REV_IN_AG(.(X, Xs), Ys) → REV_IN_AA(Xs, Zs)
REV_IN_AA(.(X, Xs), Ys) → U1_AA(X, Xs, Ys, rev_in_aa(Xs, Zs))
REV_IN_AA(.(X, Xs), Ys) → REV_IN_AA(Xs, Zs)
U1_AA(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_AA(X, Xs, Ys, app_in_gga(Zs, .(X, []), Ys))
U1_AA(X, Xs, Ys, rev_out_aa(Xs, Zs)) → APP_IN_GGA(Zs, .(X, []), Ys)
APP_IN_GGA(.(X, Xs), Ys, .(X, Zs)) → U3_GGA(X, Xs, Ys, Zs, app_in_gga(Xs, Ys, Zs))
APP_IN_GGA(.(X, Xs), Ys, .(X, Zs)) → APP_IN_GGA(Xs, Ys, Zs)
U1_AG(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_AG(X, Xs, Ys, app_in_ggg(Zs, .(X, []), Ys))
U1_AG(X, Xs, Ys, rev_out_aa(Xs, Zs)) → APP_IN_GGG(Zs, .(X, []), Ys)
APP_IN_GGG(.(X, Xs), Ys, .(X, Zs)) → U3_GGG(X, Xs, Ys, Zs, app_in_ggg(Xs, Ys, Zs))
APP_IN_GGG(.(X, Xs), Ys, .(X, Zs)) → APP_IN_GGG(Xs, Ys, Zs)
rev_in_ag([], []) → rev_out_ag([], [])
rev_in_ag(.(X, Xs), Ys) → U1_ag(X, Xs, Ys, rev_in_aa(Xs, Zs))
rev_in_aa([], []) → rev_out_aa([], [])
rev_in_aa(.(X, Xs), Ys) → U1_aa(X, Xs, Ys, rev_in_aa(Xs, Zs))
U1_aa(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_aa(X, Xs, Ys, app_in_gga(Zs, .(X, []), Ys))
app_in_gga([], X, X) → app_out_gga([], X, X)
app_in_gga(.(X, Xs), Ys, .(X, Zs)) → U3_gga(X, Xs, Ys, Zs, app_in_gga(Xs, Ys, Zs))
U3_gga(X, Xs, Ys, Zs, app_out_gga(Xs, Ys, Zs)) → app_out_gga(.(X, Xs), Ys, .(X, Zs))
U2_aa(X, Xs, Ys, app_out_gga(Zs, .(X, []), Ys)) → rev_out_aa(.(X, Xs), Ys)
U1_ag(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_ag(X, Xs, Ys, app_in_ggg(Zs, .(X, []), Ys))
app_in_ggg([], X, X) → app_out_ggg([], X, X)
app_in_ggg(.(X, Xs), Ys, .(X, Zs)) → U3_ggg(X, Xs, Ys, Zs, app_in_ggg(Xs, Ys, Zs))
U3_ggg(X, Xs, Ys, Zs, app_out_ggg(Xs, Ys, Zs)) → app_out_ggg(.(X, Xs), Ys, .(X, Zs))
U2_ag(X, Xs, Ys, app_out_ggg(Zs, .(X, []), Ys)) → rev_out_ag(.(X, Xs), Ys)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PrologToPiTRSProof
REV_IN_AG(.(X, Xs), Ys) → U1_AG(X, Xs, Ys, rev_in_aa(Xs, Zs))
REV_IN_AG(.(X, Xs), Ys) → REV_IN_AA(Xs, Zs)
REV_IN_AA(.(X, Xs), Ys) → U1_AA(X, Xs, Ys, rev_in_aa(Xs, Zs))
REV_IN_AA(.(X, Xs), Ys) → REV_IN_AA(Xs, Zs)
U1_AA(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_AA(X, Xs, Ys, app_in_gga(Zs, .(X, []), Ys))
U1_AA(X, Xs, Ys, rev_out_aa(Xs, Zs)) → APP_IN_GGA(Zs, .(X, []), Ys)
APP_IN_GGA(.(X, Xs), Ys, .(X, Zs)) → U3_GGA(X, Xs, Ys, Zs, app_in_gga(Xs, Ys, Zs))
APP_IN_GGA(.(X, Xs), Ys, .(X, Zs)) → APP_IN_GGA(Xs, Ys, Zs)
U1_AG(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_AG(X, Xs, Ys, app_in_ggg(Zs, .(X, []), Ys))
U1_AG(X, Xs, Ys, rev_out_aa(Xs, Zs)) → APP_IN_GGG(Zs, .(X, []), Ys)
APP_IN_GGG(.(X, Xs), Ys, .(X, Zs)) → U3_GGG(X, Xs, Ys, Zs, app_in_ggg(Xs, Ys, Zs))
APP_IN_GGG(.(X, Xs), Ys, .(X, Zs)) → APP_IN_GGG(Xs, Ys, Zs)
rev_in_ag([], []) → rev_out_ag([], [])
rev_in_ag(.(X, Xs), Ys) → U1_ag(X, Xs, Ys, rev_in_aa(Xs, Zs))
rev_in_aa([], []) → rev_out_aa([], [])
rev_in_aa(.(X, Xs), Ys) → U1_aa(X, Xs, Ys, rev_in_aa(Xs, Zs))
U1_aa(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_aa(X, Xs, Ys, app_in_gga(Zs, .(X, []), Ys))
app_in_gga([], X, X) → app_out_gga([], X, X)
app_in_gga(.(X, Xs), Ys, .(X, Zs)) → U3_gga(X, Xs, Ys, Zs, app_in_gga(Xs, Ys, Zs))
U3_gga(X, Xs, Ys, Zs, app_out_gga(Xs, Ys, Zs)) → app_out_gga(.(X, Xs), Ys, .(X, Zs))
U2_aa(X, Xs, Ys, app_out_gga(Zs, .(X, []), Ys)) → rev_out_aa(.(X, Xs), Ys)
U1_ag(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_ag(X, Xs, Ys, app_in_ggg(Zs, .(X, []), Ys))
app_in_ggg([], X, X) → app_out_ggg([], X, X)
app_in_ggg(.(X, Xs), Ys, .(X, Zs)) → U3_ggg(X, Xs, Ys, Zs, app_in_ggg(Xs, Ys, Zs))
U3_ggg(X, Xs, Ys, Zs, app_out_ggg(Xs, Ys, Zs)) → app_out_ggg(.(X, Xs), Ys, .(X, Zs))
U2_ag(X, Xs, Ys, app_out_ggg(Zs, .(X, []), Ys)) → rev_out_ag(.(X, Xs), Ys)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
APP_IN_GGG(.(X, Xs), Ys, .(X, Zs)) → APP_IN_GGG(Xs, Ys, Zs)
rev_in_ag([], []) → rev_out_ag([], [])
rev_in_ag(.(X, Xs), Ys) → U1_ag(X, Xs, Ys, rev_in_aa(Xs, Zs))
rev_in_aa([], []) → rev_out_aa([], [])
rev_in_aa(.(X, Xs), Ys) → U1_aa(X, Xs, Ys, rev_in_aa(Xs, Zs))
U1_aa(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_aa(X, Xs, Ys, app_in_gga(Zs, .(X, []), Ys))
app_in_gga([], X, X) → app_out_gga([], X, X)
app_in_gga(.(X, Xs), Ys, .(X, Zs)) → U3_gga(X, Xs, Ys, Zs, app_in_gga(Xs, Ys, Zs))
U3_gga(X, Xs, Ys, Zs, app_out_gga(Xs, Ys, Zs)) → app_out_gga(.(X, Xs), Ys, .(X, Zs))
U2_aa(X, Xs, Ys, app_out_gga(Zs, .(X, []), Ys)) → rev_out_aa(.(X, Xs), Ys)
U1_ag(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_ag(X, Xs, Ys, app_in_ggg(Zs, .(X, []), Ys))
app_in_ggg([], X, X) → app_out_ggg([], X, X)
app_in_ggg(.(X, Xs), Ys, .(X, Zs)) → U3_ggg(X, Xs, Ys, Zs, app_in_ggg(Xs, Ys, Zs))
U3_ggg(X, Xs, Ys, Zs, app_out_ggg(Xs, Ys, Zs)) → app_out_ggg(.(X, Xs), Ys, .(X, Zs))
U2_ag(X, Xs, Ys, app_out_ggg(Zs, .(X, []), Ys)) → rev_out_ag(.(X, Xs), Ys)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
APP_IN_GGG(.(X, Xs), Ys, .(X, Zs)) → APP_IN_GGG(Xs, Ys, Zs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
APP_IN_GGG(.(Xs), Ys, .(Zs)) → APP_IN_GGG(Xs, Ys, Zs)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PrologToPiTRSProof
APP_IN_GGA(.(X, Xs), Ys, .(X, Zs)) → APP_IN_GGA(Xs, Ys, Zs)
rev_in_ag([], []) → rev_out_ag([], [])
rev_in_ag(.(X, Xs), Ys) → U1_ag(X, Xs, Ys, rev_in_aa(Xs, Zs))
rev_in_aa([], []) → rev_out_aa([], [])
rev_in_aa(.(X, Xs), Ys) → U1_aa(X, Xs, Ys, rev_in_aa(Xs, Zs))
U1_aa(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_aa(X, Xs, Ys, app_in_gga(Zs, .(X, []), Ys))
app_in_gga([], X, X) → app_out_gga([], X, X)
app_in_gga(.(X, Xs), Ys, .(X, Zs)) → U3_gga(X, Xs, Ys, Zs, app_in_gga(Xs, Ys, Zs))
U3_gga(X, Xs, Ys, Zs, app_out_gga(Xs, Ys, Zs)) → app_out_gga(.(X, Xs), Ys, .(X, Zs))
U2_aa(X, Xs, Ys, app_out_gga(Zs, .(X, []), Ys)) → rev_out_aa(.(X, Xs), Ys)
U1_ag(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_ag(X, Xs, Ys, app_in_ggg(Zs, .(X, []), Ys))
app_in_ggg([], X, X) → app_out_ggg([], X, X)
app_in_ggg(.(X, Xs), Ys, .(X, Zs)) → U3_ggg(X, Xs, Ys, Zs, app_in_ggg(Xs, Ys, Zs))
U3_ggg(X, Xs, Ys, Zs, app_out_ggg(Xs, Ys, Zs)) → app_out_ggg(.(X, Xs), Ys, .(X, Zs))
U2_ag(X, Xs, Ys, app_out_ggg(Zs, .(X, []), Ys)) → rev_out_ag(.(X, Xs), Ys)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PrologToPiTRSProof
APP_IN_GGA(.(X, Xs), Ys, .(X, Zs)) → APP_IN_GGA(Xs, Ys, Zs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
↳ PrologToPiTRSProof
APP_IN_GGA(.(Xs), Ys) → APP_IN_GGA(Xs, Ys)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PrologToPiTRSProof
REV_IN_AA(.(X, Xs), Ys) → REV_IN_AA(Xs, Zs)
rev_in_ag([], []) → rev_out_ag([], [])
rev_in_ag(.(X, Xs), Ys) → U1_ag(X, Xs, Ys, rev_in_aa(Xs, Zs))
rev_in_aa([], []) → rev_out_aa([], [])
rev_in_aa(.(X, Xs), Ys) → U1_aa(X, Xs, Ys, rev_in_aa(Xs, Zs))
U1_aa(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_aa(X, Xs, Ys, app_in_gga(Zs, .(X, []), Ys))
app_in_gga([], X, X) → app_out_gga([], X, X)
app_in_gga(.(X, Xs), Ys, .(X, Zs)) → U3_gga(X, Xs, Ys, Zs, app_in_gga(Xs, Ys, Zs))
U3_gga(X, Xs, Ys, Zs, app_out_gga(Xs, Ys, Zs)) → app_out_gga(.(X, Xs), Ys, .(X, Zs))
U2_aa(X, Xs, Ys, app_out_gga(Zs, .(X, []), Ys)) → rev_out_aa(.(X, Xs), Ys)
U1_ag(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_ag(X, Xs, Ys, app_in_ggg(Zs, .(X, []), Ys))
app_in_ggg([], X, X) → app_out_ggg([], X, X)
app_in_ggg(.(X, Xs), Ys, .(X, Zs)) → U3_ggg(X, Xs, Ys, Zs, app_in_ggg(Xs, Ys, Zs))
U3_ggg(X, Xs, Ys, Zs, app_out_ggg(Xs, Ys, Zs)) → app_out_ggg(.(X, Xs), Ys, .(X, Zs))
U2_ag(X, Xs, Ys, app_out_ggg(Zs, .(X, []), Ys)) → rev_out_ag(.(X, Xs), Ys)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PrologToPiTRSProof
REV_IN_AA(.(X, Xs), Ys) → REV_IN_AA(Xs, Zs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ NonTerminationProof
↳ PrologToPiTRSProof
REV_IN_AA → REV_IN_AA
REV_IN_AA → REV_IN_AA
rev_in_ag([], []) → rev_out_ag([], [])
rev_in_ag(.(X, Xs), Ys) → U1_ag(X, Xs, Ys, rev_in_aa(Xs, Zs))
rev_in_aa([], []) → rev_out_aa([], [])
rev_in_aa(.(X, Xs), Ys) → U1_aa(X, Xs, Ys, rev_in_aa(Xs, Zs))
U1_aa(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_aa(X, Xs, Ys, app_in_gga(Zs, .(X, []), Ys))
app_in_gga([], X, X) → app_out_gga([], X, X)
app_in_gga(.(X, Xs), Ys, .(X, Zs)) → U3_gga(X, Xs, Ys, Zs, app_in_gga(Xs, Ys, Zs))
U3_gga(X, Xs, Ys, Zs, app_out_gga(Xs, Ys, Zs)) → app_out_gga(.(X, Xs), Ys, .(X, Zs))
U2_aa(X, Xs, Ys, app_out_gga(Zs, .(X, []), Ys)) → rev_out_aa(.(X, Xs), Ys)
U1_ag(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_ag(X, Xs, Ys, app_in_ggg(Zs, .(X, []), Ys))
app_in_ggg([], X, X) → app_out_ggg([], X, X)
app_in_ggg(.(X, Xs), Ys, .(X, Zs)) → U3_ggg(X, Xs, Ys, Zs, app_in_ggg(Xs, Ys, Zs))
U3_ggg(X, Xs, Ys, Zs, app_out_ggg(Xs, Ys, Zs)) → app_out_ggg(.(X, Xs), Ys, .(X, Zs))
U2_ag(X, Xs, Ys, app_out_ggg(Zs, .(X, []), Ys)) → rev_out_ag(.(X, Xs), Ys)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
rev_in_ag([], []) → rev_out_ag([], [])
rev_in_ag(.(X, Xs), Ys) → U1_ag(X, Xs, Ys, rev_in_aa(Xs, Zs))
rev_in_aa([], []) → rev_out_aa([], [])
rev_in_aa(.(X, Xs), Ys) → U1_aa(X, Xs, Ys, rev_in_aa(Xs, Zs))
U1_aa(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_aa(X, Xs, Ys, app_in_gga(Zs, .(X, []), Ys))
app_in_gga([], X, X) → app_out_gga([], X, X)
app_in_gga(.(X, Xs), Ys, .(X, Zs)) → U3_gga(X, Xs, Ys, Zs, app_in_gga(Xs, Ys, Zs))
U3_gga(X, Xs, Ys, Zs, app_out_gga(Xs, Ys, Zs)) → app_out_gga(.(X, Xs), Ys, .(X, Zs))
U2_aa(X, Xs, Ys, app_out_gga(Zs, .(X, []), Ys)) → rev_out_aa(.(X, Xs), Ys)
U1_ag(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_ag(X, Xs, Ys, app_in_ggg(Zs, .(X, []), Ys))
app_in_ggg([], X, X) → app_out_ggg([], X, X)
app_in_ggg(.(X, Xs), Ys, .(X, Zs)) → U3_ggg(X, Xs, Ys, Zs, app_in_ggg(Xs, Ys, Zs))
U3_ggg(X, Xs, Ys, Zs, app_out_ggg(Xs, Ys, Zs)) → app_out_ggg(.(X, Xs), Ys, .(X, Zs))
U2_ag(X, Xs, Ys, app_out_ggg(Zs, .(X, []), Ys)) → rev_out_ag(.(X, Xs), Ys)
REV_IN_AG(.(X, Xs), Ys) → U1_AG(X, Xs, Ys, rev_in_aa(Xs, Zs))
REV_IN_AG(.(X, Xs), Ys) → REV_IN_AA(Xs, Zs)
REV_IN_AA(.(X, Xs), Ys) → U1_AA(X, Xs, Ys, rev_in_aa(Xs, Zs))
REV_IN_AA(.(X, Xs), Ys) → REV_IN_AA(Xs, Zs)
U1_AA(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_AA(X, Xs, Ys, app_in_gga(Zs, .(X, []), Ys))
U1_AA(X, Xs, Ys, rev_out_aa(Xs, Zs)) → APP_IN_GGA(Zs, .(X, []), Ys)
APP_IN_GGA(.(X, Xs), Ys, .(X, Zs)) → U3_GGA(X, Xs, Ys, Zs, app_in_gga(Xs, Ys, Zs))
APP_IN_GGA(.(X, Xs), Ys, .(X, Zs)) → APP_IN_GGA(Xs, Ys, Zs)
U1_AG(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_AG(X, Xs, Ys, app_in_ggg(Zs, .(X, []), Ys))
U1_AG(X, Xs, Ys, rev_out_aa(Xs, Zs)) → APP_IN_GGG(Zs, .(X, []), Ys)
APP_IN_GGG(.(X, Xs), Ys, .(X, Zs)) → U3_GGG(X, Xs, Ys, Zs, app_in_ggg(Xs, Ys, Zs))
APP_IN_GGG(.(X, Xs), Ys, .(X, Zs)) → APP_IN_GGG(Xs, Ys, Zs)
rev_in_ag([], []) → rev_out_ag([], [])
rev_in_ag(.(X, Xs), Ys) → U1_ag(X, Xs, Ys, rev_in_aa(Xs, Zs))
rev_in_aa([], []) → rev_out_aa([], [])
rev_in_aa(.(X, Xs), Ys) → U1_aa(X, Xs, Ys, rev_in_aa(Xs, Zs))
U1_aa(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_aa(X, Xs, Ys, app_in_gga(Zs, .(X, []), Ys))
app_in_gga([], X, X) → app_out_gga([], X, X)
app_in_gga(.(X, Xs), Ys, .(X, Zs)) → U3_gga(X, Xs, Ys, Zs, app_in_gga(Xs, Ys, Zs))
U3_gga(X, Xs, Ys, Zs, app_out_gga(Xs, Ys, Zs)) → app_out_gga(.(X, Xs), Ys, .(X, Zs))
U2_aa(X, Xs, Ys, app_out_gga(Zs, .(X, []), Ys)) → rev_out_aa(.(X, Xs), Ys)
U1_ag(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_ag(X, Xs, Ys, app_in_ggg(Zs, .(X, []), Ys))
app_in_ggg([], X, X) → app_out_ggg([], X, X)
app_in_ggg(.(X, Xs), Ys, .(X, Zs)) → U3_ggg(X, Xs, Ys, Zs, app_in_ggg(Xs, Ys, Zs))
U3_ggg(X, Xs, Ys, Zs, app_out_ggg(Xs, Ys, Zs)) → app_out_ggg(.(X, Xs), Ys, .(X, Zs))
U2_ag(X, Xs, Ys, app_out_ggg(Zs, .(X, []), Ys)) → rev_out_ag(.(X, Xs), Ys)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
REV_IN_AG(.(X, Xs), Ys) → U1_AG(X, Xs, Ys, rev_in_aa(Xs, Zs))
REV_IN_AG(.(X, Xs), Ys) → REV_IN_AA(Xs, Zs)
REV_IN_AA(.(X, Xs), Ys) → U1_AA(X, Xs, Ys, rev_in_aa(Xs, Zs))
REV_IN_AA(.(X, Xs), Ys) → REV_IN_AA(Xs, Zs)
U1_AA(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_AA(X, Xs, Ys, app_in_gga(Zs, .(X, []), Ys))
U1_AA(X, Xs, Ys, rev_out_aa(Xs, Zs)) → APP_IN_GGA(Zs, .(X, []), Ys)
APP_IN_GGA(.(X, Xs), Ys, .(X, Zs)) → U3_GGA(X, Xs, Ys, Zs, app_in_gga(Xs, Ys, Zs))
APP_IN_GGA(.(X, Xs), Ys, .(X, Zs)) → APP_IN_GGA(Xs, Ys, Zs)
U1_AG(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_AG(X, Xs, Ys, app_in_ggg(Zs, .(X, []), Ys))
U1_AG(X, Xs, Ys, rev_out_aa(Xs, Zs)) → APP_IN_GGG(Zs, .(X, []), Ys)
APP_IN_GGG(.(X, Xs), Ys, .(X, Zs)) → U3_GGG(X, Xs, Ys, Zs, app_in_ggg(Xs, Ys, Zs))
APP_IN_GGG(.(X, Xs), Ys, .(X, Zs)) → APP_IN_GGG(Xs, Ys, Zs)
rev_in_ag([], []) → rev_out_ag([], [])
rev_in_ag(.(X, Xs), Ys) → U1_ag(X, Xs, Ys, rev_in_aa(Xs, Zs))
rev_in_aa([], []) → rev_out_aa([], [])
rev_in_aa(.(X, Xs), Ys) → U1_aa(X, Xs, Ys, rev_in_aa(Xs, Zs))
U1_aa(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_aa(X, Xs, Ys, app_in_gga(Zs, .(X, []), Ys))
app_in_gga([], X, X) → app_out_gga([], X, X)
app_in_gga(.(X, Xs), Ys, .(X, Zs)) → U3_gga(X, Xs, Ys, Zs, app_in_gga(Xs, Ys, Zs))
U3_gga(X, Xs, Ys, Zs, app_out_gga(Xs, Ys, Zs)) → app_out_gga(.(X, Xs), Ys, .(X, Zs))
U2_aa(X, Xs, Ys, app_out_gga(Zs, .(X, []), Ys)) → rev_out_aa(.(X, Xs), Ys)
U1_ag(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_ag(X, Xs, Ys, app_in_ggg(Zs, .(X, []), Ys))
app_in_ggg([], X, X) → app_out_ggg([], X, X)
app_in_ggg(.(X, Xs), Ys, .(X, Zs)) → U3_ggg(X, Xs, Ys, Zs, app_in_ggg(Xs, Ys, Zs))
U3_ggg(X, Xs, Ys, Zs, app_out_ggg(Xs, Ys, Zs)) → app_out_ggg(.(X, Xs), Ys, .(X, Zs))
U2_ag(X, Xs, Ys, app_out_ggg(Zs, .(X, []), Ys)) → rev_out_ag(.(X, Xs), Ys)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
APP_IN_GGG(.(X, Xs), Ys, .(X, Zs)) → APP_IN_GGG(Xs, Ys, Zs)
rev_in_ag([], []) → rev_out_ag([], [])
rev_in_ag(.(X, Xs), Ys) → U1_ag(X, Xs, Ys, rev_in_aa(Xs, Zs))
rev_in_aa([], []) → rev_out_aa([], [])
rev_in_aa(.(X, Xs), Ys) → U1_aa(X, Xs, Ys, rev_in_aa(Xs, Zs))
U1_aa(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_aa(X, Xs, Ys, app_in_gga(Zs, .(X, []), Ys))
app_in_gga([], X, X) → app_out_gga([], X, X)
app_in_gga(.(X, Xs), Ys, .(X, Zs)) → U3_gga(X, Xs, Ys, Zs, app_in_gga(Xs, Ys, Zs))
U3_gga(X, Xs, Ys, Zs, app_out_gga(Xs, Ys, Zs)) → app_out_gga(.(X, Xs), Ys, .(X, Zs))
U2_aa(X, Xs, Ys, app_out_gga(Zs, .(X, []), Ys)) → rev_out_aa(.(X, Xs), Ys)
U1_ag(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_ag(X, Xs, Ys, app_in_ggg(Zs, .(X, []), Ys))
app_in_ggg([], X, X) → app_out_ggg([], X, X)
app_in_ggg(.(X, Xs), Ys, .(X, Zs)) → U3_ggg(X, Xs, Ys, Zs, app_in_ggg(Xs, Ys, Zs))
U3_ggg(X, Xs, Ys, Zs, app_out_ggg(Xs, Ys, Zs)) → app_out_ggg(.(X, Xs), Ys, .(X, Zs))
U2_ag(X, Xs, Ys, app_out_ggg(Zs, .(X, []), Ys)) → rev_out_ag(.(X, Xs), Ys)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
APP_IN_GGG(.(X, Xs), Ys, .(X, Zs)) → APP_IN_GGG(Xs, Ys, Zs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
↳ PiDP
APP_IN_GGG(.(Xs), Ys, .(Zs)) → APP_IN_GGG(Xs, Ys, Zs)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
APP_IN_GGA(.(X, Xs), Ys, .(X, Zs)) → APP_IN_GGA(Xs, Ys, Zs)
rev_in_ag([], []) → rev_out_ag([], [])
rev_in_ag(.(X, Xs), Ys) → U1_ag(X, Xs, Ys, rev_in_aa(Xs, Zs))
rev_in_aa([], []) → rev_out_aa([], [])
rev_in_aa(.(X, Xs), Ys) → U1_aa(X, Xs, Ys, rev_in_aa(Xs, Zs))
U1_aa(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_aa(X, Xs, Ys, app_in_gga(Zs, .(X, []), Ys))
app_in_gga([], X, X) → app_out_gga([], X, X)
app_in_gga(.(X, Xs), Ys, .(X, Zs)) → U3_gga(X, Xs, Ys, Zs, app_in_gga(Xs, Ys, Zs))
U3_gga(X, Xs, Ys, Zs, app_out_gga(Xs, Ys, Zs)) → app_out_gga(.(X, Xs), Ys, .(X, Zs))
U2_aa(X, Xs, Ys, app_out_gga(Zs, .(X, []), Ys)) → rev_out_aa(.(X, Xs), Ys)
U1_ag(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_ag(X, Xs, Ys, app_in_ggg(Zs, .(X, []), Ys))
app_in_ggg([], X, X) → app_out_ggg([], X, X)
app_in_ggg(.(X, Xs), Ys, .(X, Zs)) → U3_ggg(X, Xs, Ys, Zs, app_in_ggg(Xs, Ys, Zs))
U3_ggg(X, Xs, Ys, Zs, app_out_ggg(Xs, Ys, Zs)) → app_out_ggg(.(X, Xs), Ys, .(X, Zs))
U2_ag(X, Xs, Ys, app_out_ggg(Zs, .(X, []), Ys)) → rev_out_ag(.(X, Xs), Ys)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
APP_IN_GGA(.(X, Xs), Ys, .(X, Zs)) → APP_IN_GGA(Xs, Ys, Zs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
APP_IN_GGA(.(Xs), Ys) → APP_IN_GGA(Xs, Ys)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
REV_IN_AA(.(X, Xs), Ys) → REV_IN_AA(Xs, Zs)
rev_in_ag([], []) → rev_out_ag([], [])
rev_in_ag(.(X, Xs), Ys) → U1_ag(X, Xs, Ys, rev_in_aa(Xs, Zs))
rev_in_aa([], []) → rev_out_aa([], [])
rev_in_aa(.(X, Xs), Ys) → U1_aa(X, Xs, Ys, rev_in_aa(Xs, Zs))
U1_aa(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_aa(X, Xs, Ys, app_in_gga(Zs, .(X, []), Ys))
app_in_gga([], X, X) → app_out_gga([], X, X)
app_in_gga(.(X, Xs), Ys, .(X, Zs)) → U3_gga(X, Xs, Ys, Zs, app_in_gga(Xs, Ys, Zs))
U3_gga(X, Xs, Ys, Zs, app_out_gga(Xs, Ys, Zs)) → app_out_gga(.(X, Xs), Ys, .(X, Zs))
U2_aa(X, Xs, Ys, app_out_gga(Zs, .(X, []), Ys)) → rev_out_aa(.(X, Xs), Ys)
U1_ag(X, Xs, Ys, rev_out_aa(Xs, Zs)) → U2_ag(X, Xs, Ys, app_in_ggg(Zs, .(X, []), Ys))
app_in_ggg([], X, X) → app_out_ggg([], X, X)
app_in_ggg(.(X, Xs), Ys, .(X, Zs)) → U3_ggg(X, Xs, Ys, Zs, app_in_ggg(Xs, Ys, Zs))
U3_ggg(X, Xs, Ys, Zs, app_out_ggg(Xs, Ys, Zs)) → app_out_ggg(.(X, Xs), Ys, .(X, Zs))
U2_ag(X, Xs, Ys, app_out_ggg(Zs, .(X, []), Ys)) → rev_out_ag(.(X, Xs), Ys)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
REV_IN_AA(.(X, Xs), Ys) → REV_IN_AA(Xs, Zs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ NonTerminationProof
REV_IN_AA → REV_IN_AA
REV_IN_AA → REV_IN_AA